package com.example.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 认证工具类
 * 提供获取当前登录用户信息的便捷方法
 * 使用TokenHelper来主动解析Token，符合Spring Boot最佳实践
 */
@Component
public class AuthUtils {

    private static TokenHelper tokenHelper;

    @Autowired
    public void setTokenHelper(TokenHelper tokenHelper) {
        AuthUtils.tokenHelper = tokenHelper;
    }

    /**
     * 获取当前登录用户的用户名
     * 
     * @return 当前登录用户的用户名，如果未登录则返回null
     */
    public static String getCurrentUsername() {
        return tokenHelper != null ? tokenHelper.getCurrentUsername() : null;
    }

    /**
     * 获取当前登录用户的用户ID
     * 
     * @return 当前登录用户的用户ID，如果未登录则返回null
     */
    public static Long getCurrentUserId() {
        return tokenHelper != null ? tokenHelper.getCurrentUserId() : null;
    }

    /**
     * 检查当前是否有用户登录
     * 
     * @return 如果有用户登录返回true，否则返回false
     */
    public static boolean isAuthenticated() {
        return tokenHelper != null && tokenHelper.isAuthenticated();
    }

    /**
     * 检查当前登录用户是否为指定用户名
     * 
     * @param username 要检查的用户名
     * @return 如果当前用户是指定用户返回true，否则返回false
     */
    public static boolean isCurrentUser(String username) {
        return tokenHelper != null && tokenHelper.isCurrentUser(username);
    }
}
